﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace System.Reflection
{
	// Token: 0x0200012C RID: 300
	public class TypeInfo_wzh
	{
		// Token: 0x06000468 RID: 1128 RVA: 0x00013987 File Offset: 0x00011D87
		public TypeInfo_wzh(Type type)
		{
			this.type = type;
		}

		// Token: 0x17000024 RID: 36
		// (get) Token: 0x06000469 RID: 1129 RVA: 0x00013996 File Offset: 0x00011D96
		public bool IsClass
		{
			get
			{
				return this.type.IsClass;
			}
		}

		// Token: 0x17000025 RID: 37
		// (get) Token: 0x0600046A RID: 1130 RVA: 0x000139A3 File Offset: 0x00011DA3
		public bool IsPublic
		{
			get
			{
				return this.type.IsPublic;
			}
		}

		// Token: 0x17000026 RID: 38
		// (get) Token: 0x0600046B RID: 1131 RVA: 0x000139B0 File Offset: 0x00011DB0
		public bool IsValueType
		{
			get
			{
				return this.type.IsValueType;
			}
		}

		// Token: 0x17000027 RID: 39
		// (get) Token: 0x0600046C RID: 1132 RVA: 0x000139BD File Offset: 0x00011DBD
		public bool IsNestedPublic
		{
			get
			{
				return this.type.IsNestedPublic;
			}
		}

		// Token: 0x17000028 RID: 40
		// (get) Token: 0x0600046D RID: 1133 RVA: 0x000139CA File Offset: 0x00011DCA
		public IEnumerable<ConstructorInfo> DeclaredConstructors
		{
			get
			{
				return this.type.GetConstructors().AsEnumerable<ConstructorInfo>();
			}
		}

		// Token: 0x17000029 RID: 41
		// (get) Token: 0x0600046E RID: 1134 RVA: 0x000139DC File Offset: 0x00011DDC
		public bool IsGenericType
		{
			get
			{
				return this.type.IsGenericType;
			}
		}

		// Token: 0x0600046F RID: 1135 RVA: 0x000139E9 File Offset: 0x00011DE9
		public Type GetGenericTypeDefinition()
		{
			return this.type.GetGenericTypeDefinition();
		}

		// Token: 0x06000470 RID: 1136 RVA: 0x000139F6 File Offset: 0x00011DF6
		public Type AsType()
		{
			return this.type;
		}

		// Token: 0x06000471 RID: 1137 RVA: 0x000139FE File Offset: 0x00011DFE
		public MethodInfo GetDeclaredMethod(string name)
		{
			return this.type.GetMethod(name);
		}

		// Token: 0x1700002A RID: 42
		// (get) Token: 0x06000472 RID: 1138 RVA: 0x00013A0C File Offset: 0x00011E0C
		public Type[] GenericTypeArguments
		{
			get
			{
				return this.type.GetGenericArguments();
			}
		}

		// Token: 0x1700002B RID: 43
		// (get) Token: 0x06000473 RID: 1139 RVA: 0x00013A19 File Offset: 0x00011E19
		public bool IsEnum
		{
			get
			{
				return this.type.IsEnum;
			}
		}

		// Token: 0x06000474 RID: 1140 RVA: 0x00013A26 File Offset: 0x00011E26
		public bool IsConstructedGenericType()
		{
			return this.type.IsGenericType && !this.type.IsGenericTypeDefinition;
		}

		// Token: 0x1700002C RID: 44
		// (get) Token: 0x06000475 RID: 1141 RVA: 0x00013A49 File Offset: 0x00011E49
		public Type[] ImplementedInterfaces
		{
			get
			{
				return this.type.GetInterfaces();
			}
		}

		// Token: 0x06000476 RID: 1142 RVA: 0x00013A56 File Offset: 0x00011E56
		public MethodInfo[] GetRuntimeMethods()
		{
			return this.type.GetMethods();
		}

		// Token: 0x06000477 RID: 1143 RVA: 0x00013A63 File Offset: 0x00011E63
		public T GetCustomAttribute<T>(bool inherit = true) where T : Attribute
		{
			return this.type.GetCustomAttributes(inherit).OfType<T>().FirstOrDefault<T>();
		}

		// Token: 0x06000478 RID: 1144 RVA: 0x00013A7B File Offset: 0x00011E7B
		public IEnumerable<T> GetCustomAttributes<T>(bool inherit = true) where T : Attribute
		{
			return this.type.GetCustomAttributes(inherit).OfType<T>();
		}

		// Token: 0x040001F3 RID: 499
		private readonly Type type;
	}
}
